/**
 * * 字符串转正则
 * @param string 字符串
 * @returns
 */
export function strToRegex(string: string | undefined | null) {
  string ||= "";
  let regexStr = "";
  for (let i = 0; i < string?.length; i++) {
    const char = string[i];
    if (char === "*") {
      // 处理 ** 的情况
      if (string[i + 1] === "*") {
        regexStr += ".*";
        i++; // 跳过下一个 *
      } else {
        regexStr += "[^/]*";
      }
    } else if (char === "?") {
      regexStr += "[^/]";
    } else if (char === "/") {
      regexStr += "\\/";
    } else {
      // 特殊字符需要转义
      regexStr += escapeRegExp(char);
    }
  }
  return new RegExp(regexStr);
}

/**
 * * 将特殊字符转义为正则
 */
export function escapeRegExp(str: string): string {
  return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
